﻿'Imports System.Web
'Imports System.Security.Principal
'Imports Fgv.Framework.Seguranca.Dominio
'Imports Fgv.Framework.Seguranca.Dal

'Namespace Seguranca.Servico

'    ''' <summary>
'    ''' Classe de autenticação de serviço do SigaUm
'    ''' </summary>
'    ''' <remarks></remarks>
'    Public Class SigaUmAutenticacaoServico
'        Inherits BaseAutenticacaoServico

'        Private _usuarioDao As IUsuarioDao

'        ''' <summary>
'        ''' Propriedade do Usuario Dao
'        ''' </summary>
'        ''' <value>interface IUsuarioDao</value>
'        ''' <returns>interface IUsuarioDao</returns>
'        ''' <remarks></remarks>
'        Public Property UsuarioDao() As IUsuarioDao
'            Get
'                Return _usuarioDao
'            End Get
'            Set(ByVal value As IUsuarioDao)
'                _usuarioDao = value
'            End Set
'        End Property

'        ''' <summary>
'        ''' Função de autenticação do usuário
'        ''' </summary>
'        ''' <param name="_nomeUsuario">String</param>
'        ''' <param name="_senha">String</param>
'        ''' <returns>classe Usuario</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function AutenticaUsuario(ByVal _nomeUsuario As String, ByVal _senha As String) As Usuario
'            Return UsuarioDao.BuscarPorNomeUsuarioESenha(_nomeUsuario.ToUpper, _senha.ToUpper)
'        End Function

'        Public Overrides Function UsuarioEstaBloqueado(ByVal _nomeUsuario As String) As Boolean
'            Return UsuarioDao.UsuarioEstaBloqueado(_nomeUsuario.ToUpper)
'        End Function

'        ''' <summary>
'        ''' Função que identifica se o usuário já está autenticado no SigaUm ou no SigaDois.
'        ''' Caso Apenas no SigaUm, cria informações de contexto para torná-lo autenticado também no 
'        ''' SigaDois.
'        ''' </summary>
'        ''' <param name="_httpContext">HttpContext</param>
'        ''' <returns>Boolean</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function UsuarioEstaAutenticado(ByVal _httpContext As HttpContext) As Boolean

'            If Not MyBase.UsuarioEstaAutenticado(_httpContext) Then

'                Dim _digest As String = Nothing

'                If Not IsNothing(_httpContext) Then
'                    If Not _httpContext.Request.Form("Digest") Is Nothing Then
'                        _digest = _httpContext.Request.Form("Digest").ToString

'                        If SistemaOrigemEConfiavel(_digest) Then

'                            If _httpContext.Request.Form("IdUsuario") Is Nothing Or _
'                            _httpContext.Request.Form("NomeUsuario") Is Nothing Then
'                                Return False
'                            End If

'                            Dim _idUsuario As String = _httpContext.Request.Form("IdUsuario").ToString
'                            Dim _nomeUsuario As String = _httpContext.Request.Form("NomeUsuario").ToString

'                            Dim _emailUsuario As String = Nothing
'                            If Not _httpContext.Request.Form("EmailUsuario") Is Nothing Then
'                                _emailUsuario = _httpContext.Request.Form("EmailUsuario").ToString
'                            End If

'                            Dim _unidadeUsuario As String = Nothing
'                            If Not _httpContext.Request.Form("UnidadeUsuario") Is Nothing Then
'                                _unidadeUsuario = _httpContext.Request.Form("UnidadeUsuario").ToString
'                            End If

'                            Dim _telefoneUsuario As String = Nothing
'                            If Not _httpContext.Request.Form("TelefoneUsuario") Is Nothing Then
'                                _telefoneUsuario = _httpContext.Request.Form("TelefoneUsuario").ToString
'                            End If

'                            Dim _papeisConcatenados As String = Nothing
'                            Dim _papeis As String() = Nothing
'                            If Not _httpContext.Request.Form("Papeis") Is Nothing Then
'                                _papeisConcatenados = _httpContext.Request.Form("Papeis").ToString
'                                _papeis = _papeisConcatenados.Split(", ")
'                            End If

'                            Dim _perfisChaves As New List(Of String)
'                            If Not _httpContext.Request.Form("PerfisChaves") Is Nothing Then
'                                Dim _perfisConcatenados As String = _httpContext.Request.Form("PerfisChaves").ToString
'                                If Not String.IsNullOrEmpty(_perfisConcatenados) Then
'                                    '_perfisChaves.Concat(_perfisConcatenados.Split(", ").ToList())
'                                    _perfisChaves = _perfisConcatenados.Split(", ").ToList()
'                                End If
'                            End If

'                            Dim _perfisValores As New List(Of String)
'                            If Not _httpContext.Request.Form("PerfisValores") Is Nothing Then
'                                Dim _perfisConcatenados As String = _httpContext.Request.Form("PerfisValores").ToString
'                                If Not String.IsNullOrEmpty(_perfisConcatenados) Then
'                                    '_perfisValores.Concat(_perfisConcatenados.Split(", ").ToList())
'                                    _perfisValores = _perfisConcatenados.Split(", ").ToList()
'                                End If
'                            End If

'                            Dim _identity As IIdentity = New GenericIdentity(_nomeUsuario, "SigaUm")
'                            Dim _principal As IPrincipal = New GenericPrincipal(_identity, _papeis)
'                            _httpContext.User = _principal

'                            Dim _sessao As SessionState.HttpSessionState = _httpContext.Session

'                            If _sessao("_unidadeUsuario") Is Nothing Then
'                                _sessao("_unidadeUsuario") = _unidadeUsuario
'                            End If
'                            If _sessao("_telefoneUsuario") Is Nothing Then
'                                _sessao("_telefoneUsuario") = _telefoneUsuario
'                            End If
'                            _sessao("_nomeUsuario") = _nomeUsuario
'                            _sessao("_emailUsuario") = _emailUsuario

'                            Dim _perfisUsuario As New List(Of Fgv.Framework.Seguranca.Dominio.Perfil)
'                            For Each _chave As String In _perfisChaves
'                                If Not String.IsNullOrEmpty(_perfisValores(_perfisChaves.IndexOf(_chave))) Then
'                                    Dim _perfilUsuario As New Fgv.Framework.Seguranca.Dominio.Perfil
'                                    _perfilUsuario.Chave = _chave
'                                    _perfilUsuario.Valor = _perfisValores(_perfisChaves.IndexOf(_chave))
'                                    _perfisUsuario.Add(_perfilUsuario)
'                                    _sessao("_perfisUsuario") = _perfisUsuario
'                                End If
'                            Next
'                            Return True
'                        End If
'                    End If
'                End If

'            Else
'                Return True
'            End If
'            Return False
'        End Function

'        ''' <summary>
'        ''' Função que retorna a origem e a confiabilidade.
'        ''' </summary>
'        ''' <param name="_digest">String</param>
'        ''' <returns>Boolean</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function SistemaOrigemEConfiavel(ByVal _digest As String) As Boolean
'            Return True
'        End Function

'        Public Const PerfilChaveConvCd As String = "CONV_CD"
'        Public Const PerfilChaveLocalSq As String = "LOCAL_SQ"
'        Public Const PerfilChaveUsuarioSistCd As String = "USR_SIST_CD"

'        ''' <summary>
'        ''' Busca o nome do usuário pelo código externo.
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function BuscarNomePorCodigoExterno(ByVal _codigoExterno As String) As String
'            Return UsuarioDao.BuscarNomePorCodigoExterno(_codigoExterno.ToUpper)
'        End Function

'        ''' <summary>
'        ''' Busca a senha pelo código externo
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function BuscarSenhaPorCodigoExterno(ByVal _codigoExterno As String) As String
'            Return UsuarioDao.BuscarSenhaPorCodigoExterno(_codigoExterno.ToUpper)
'        End Function

'        ''' <summary>
'        ''' Busca o E-mail pelo código externo
'        ''' </summary>
'        ''' <param name="_codigoExterno">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function BuscarEmailPorCodigoExterno(ByVal _codigoExterno As String) As String
'            Return UsuarioDao.BuscarEmailPorCodigoExterno(_codigoExterno.ToUpper)
'        End Function

'        ''' <summary>
'        ''' Busca o Código externo pelo e-mail.
'        ''' </summary>
'        ''' <param name="_email">String</param>
'        ''' <returns>String</returns>
'        ''' <remarks></remarks>
'        Public Overrides Function BuscarCodigoExternoPorEmail(ByVal _email As String) As String
'            Return UsuarioDao.BuscarCodigoExternoPorEmail(_email)
'        End Function

'        ''' <summary>
'        ''' Alteração de senha.
'        ''' </summary>
'        ''' <param name="_login">String</param>
'        ''' <param name="_senha">String</param>
'        ''' <remarks></remarks>
'        Public Overrides Sub AlterarSenha(ByVal _login As String, ByVal _senha As String)
'            UsuarioDao.AlterarSenha(_login, _senha)
'        End Sub

'    End Class

'End Namespace